<?xml version="1.0"?>
<doc>
    <assembly>
        <name>TVA.Communication</name>
    </assembly>
    <members>
        <member name="T:TVA.Communication.ClientBase">
            <summary>
            Base class for a client involved in server-client communication.
            </summary>
        </member>
        <member name="T:TVA.Communication.IClient">
            <summary>
            Defines a client involved in server-client communication.
            </summary>
        </member>
        <member name="M:TVA.Communication.IClient.Connect">
            <summary>
            Connects client to the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.IClient.ConnectAsync">
            <summary>
            Connects client to the server asynchronously.
            </summary>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.IClient.Disconnect">
            <summary>
            Disconnects client from the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.IClient.Send(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.IClient.SendAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="E:TVA.Communication.IClient.ConnectionAttempt">
            <summary>
            Occurs when client is attempting connection to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.ConnectionEstablished">
            <summary>
            Occurs when client connection to the server is established.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.ConnectionTerminated">
            <summary>
            Occurs when client connection to the server is terminated.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.ConnectionException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered during connection attempt to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.HandshakeProcessTimeout">
            <summary>
            Occurs when server-client handshake, when enabled, cannot be performed within the specified <see cref="P:TVA.Communication.IClient.HandshakeTimeout"/> time.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.HandshakeProcessUnsuccessful">
            <summary>
            Occurs when server-client handshake, when enabled, cannot be performed successfully due to information mismatch.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.SendDataStart">
            <summary>
            Occurs when the client begins sending data to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.SendDataComplete">
            <summary>
            Occurs when the client has successfully sent data to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.SendDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when sending data to the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when sending data to the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IClient.ReceiveDataTimeout">
            <summary>
            Occurs when no data is received from the server for the <see cref="P:TVA.Communication.IClient.ReceiveTimeout"/> time.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.ReceiveDataComplete">
            <summary>
            Occurs when the client receives data from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the buffer containing data received from the server starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the number of bytes received in the buffer from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IClient.ReceiveDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when receiving data from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when receiving data from the server.
            </remarks>
        </member>
        <member name="P:TVA.Communication.IClient.ConnectionString">
            <summary>
            Gets or sets the data required by the client to connect to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.MaxConnectionAttempts">
            <summary>
            Gets or sets the maximum number of times the client will attempt to connect to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.Handshake">
            <summary>
            Gets or sets a boolean value that indicates whether the client will do a handshake with the server after the connection has been established.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.HandshakeTimeout">
            <summary>
            Gets or sets the number of milliseconds that the client will wait for the server's response to the <see cref="P:TVA.Communication.IClient.Handshake"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.SharedSecret">
            <summary>
            Gets or sets the key to be used for ciphering the data exchanged between the client and server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.Encryption">
            <summary>
            Gets or sets the <see cref="T:TVA.Security.Cryptography.CipherStrength"/> to be used for ciphering the data exchanged between the client and server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.SecureSession">
            <summary>
            Gets or sets a boolean value that indicates whether the data exchanged between the client and server will be encrypted using a private session passphrase.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ReceiveTimeout">
            <summary>
            Gets or sets the number of milliseconds after which the client will raise the <see cref="E:TVA.Communication.IClient.ReceiveDataTimeout"/> event if no data is received from the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the client for receiving data from the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.Compression">
            <summary>
            Gets or sets the <see cref="T:TVA.IO.Compression.CompressionStrength"/> to be used for compressing the data exchanged between the client and server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.TextEncoding">
            <summary>
            Gets or sets the <see cref="T:System.Text.Encoding"/> to be used for the text sent to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ReceiveDataHandler">
            <summary>
            Gets or sets a <see cref="T:System.Delegate"/> to be invoked instead of the <see cref="E:TVA.Communication.IClient.ReceiveDataComplete"/> event when data is received from server.
            </summary>
            <remarks>
            arg1 in <see cref="P:TVA.Communication.IClient.ReceiveDataHandler"/> is the buffer containing the data received from the server.<br/>
            arg2 in <see cref="P:TVA.Communication.IClient.ReceiveDataHandler"/> is the zero-based starting offset into the buffer containing the data received from the server.<br/>
            arg3 in <see cref="P:TVA.Communication.IClient.ReceiveDataHandler"/> is the number of bytes received from the server that is stored in the buffer (arg1).
            </remarks>
        </member>
        <member name="P:TVA.Communication.IClient.ServerID">
            <summary>
            Gets the server ID.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ClientID">
            <summary>
            Gets the client ID.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ServerUri">
            <summary>
            Gets the server URI.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.CurrentState">
            <summary>
            Gets the current <see cref="T:TVA.Communication.ClientState"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.TransportProtocol">
            <summary>
            Gets the <see cref="P:TVA.Communication.IClient.TransportProtocol"/> used by the client for the transportation of data with the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ConnectionTime">
            <summary>
            Gets the <see cref="T:TVA.Units.Time"/> for which the client has been connected to the server.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultMaxConnectionAttempts">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.MaxConnectionAttempts"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultHandshake">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.Handshake"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultHandshakeTimeout">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.HandshakeTimeout"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultSharedSecret">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.SharedSecret"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultEncryption">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.Encryption"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultSecureSession">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.SecureSession"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultReceiveTimeout">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ReceiveTimeout"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultReceiveBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ReceiveBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultCompression">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.Compression"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultPersistSettings">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultSettingsCategory">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.SettingsCategory"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.#ctor">
            <summary>
            Initializes a new instance of the client.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.#ctor(TVA.Communication.TransportProtocol,System.String)">
            <summary>
            Initializes a new instance of the client.
            </summary>
            <param name="transportProtocol">One of the <see cref="P:TVA.Communication.ClientBase.TransportProtocol"/> values.</param>
            <param name="connectionString">The data used by the client for connection to a server.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Disconnect">
            <summary>
            When overridden in a derived class, disconnects client from the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.ValidateConnectionString(System.String)">
            <summary>
            When overridden in a derived class, validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">The connection string to be validated.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.GetSessionSecret">
            <summary>
            When overridden in a derived class, returns the secret key used for ciphering data.
            </summary>
            <returns>The secret key used for ciphering data.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.Initialize">
            <summary>
            Initializes the client.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ClientBase.Initialize"/> is to be called by user-code directly only if the client is not consumed through the designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.BeginInit">
            <summary>
            Performs necessary operations before the client properties are initialized.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ClientBase.BeginInit"/> should never be called by user-code directly. This method exists solely for use by the designer if the server is consumed through 
            the designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.EndInit">
            <summary>
            Performs necessary operations after the client properties are initialized.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ClientBase.EndInit"/> should never be called by user-code directly. This method exists solely for use by the designer if the server is consumed through the 
            designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.SaveSettings">
            <summary>
            Saves client settings to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><see cref="P:TVA.Communication.ClientBase.SettingsCategory"/> has a value of null or empty string.</exception>
        </member>
        <member name="M:TVA.Communication.ClientBase.LoadSettings">
            <summary>
            Loads saved client settings from the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><see cref="P:TVA.Communication.ClientBase.SettingsCategory"/> has a value of null or empty string.</exception>
        </member>
        <member name="M:TVA.Communication.ClientBase.Connect">
            <summary>
            Connects the client to the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.ConnectAsync">
            <summary>
            Connects the client to the server asynchronously.
            </summary>
            <exception cref="T:System.FormatException">Server property in <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> is invalid.</exception>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the client when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
            <remarks>
            Derived classes are expected to override this method with protocol specific connection operations. Call the base class
            method to obtain an operational wait handle if protocol connection operation doesn't provide one already.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.Send(System.String)">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="data">The plain-text data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Send(System.Object)">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="serializableObject">The serializable object that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Send(System.Byte[])">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="data">The binary data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Send(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendAsync(System.String)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The plain-text data that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendAsync(System.Object)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="serializableObject">The serializable object that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendAsync(System.Byte[])">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The binary data that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnConnectionAttempt">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionAttempt"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnConnectionEstablished">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionEstablished"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnConnectionTerminated">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionTerminated"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnConnectionException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.ConnectionException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnHandshakeProcessTimeout">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.HandshakeProcessTimeout"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnHandshakeProcessUnsuccessful">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.HandshakeProcessUnsuccessful"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnSendDataStart">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.SendDataStart"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnSendDataComplete">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.SendDataComplete"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnSendDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.SendDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.SendDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnReceiveDataTimeout">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataTimeout"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnReceiveDataComplete(System.Byte[],System.Int32)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataComplete"/> event.
            </summary>
            <param name="data">Data received from the client.</param>
            <param name="size">Number of bytes received from the client.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnReceiveDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the client and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.ReConnect">
            <summary>
            Re-connects the client if currently connected.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.Create(System.String)">
            <summary>
            Create a communications client
            </summary>
            <remarks>
            Note that typical connection string should be prefixed with a "protocol=tcp", "protocol=udp", "protocol=serial" or "protocol=file"
            </remarks>
            <returns>A communications client.</returns>
            <param name="connectionString">Connection string for the client.</param>
        </member>
        <member name="E:TVA.Communication.ClientBase.ConnectionAttempt">
            <summary>
            Occurs when client is attempting connection to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.ConnectionEstablished">
            <summary>
            Occurs when client connection to the server is established.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.ConnectionTerminated">
            <summary>
            Occurs when client connection to the server is terminated.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.ConnectionException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered during connection attempt to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.HandshakeProcessTimeout">
            <summary>
            Occurs when server-client handshake, when enabled, cannot be performed within the specified <see cref="P:TVA.Communication.ClientBase.HandshakeTimeout"/> time.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.HandshakeProcessUnsuccessful">
            <summary>
            Occurs when server-client handshake, when enabled, cannot be performed successfully due to information mismatch.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.SendDataStart">
            <summary>
            Occurs when the client begins sending data to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.SendDataComplete">
            <summary>
            Occurs when the client has successfully sent data to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.SendDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when sending data to the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when sending data to the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ClientBase.ReceiveDataTimeout">
            <summary>
            Occurs when no data is received from the server for the <see cref="P:TVA.Communication.ClientBase.ReceiveTimeout"/> time.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.ReceiveDataComplete">
            <summary>
            Occurs when the client receives data from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the buffer containing data received from the server starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the number of bytes received in the buffer from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ClientBase.ReceiveDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when receiving data from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when receiving data from the server.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.ServerUri">
            <summary>
            Gets the server URI.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.ConnectionString">
            <summary>
            Gets or sets the data required by the client to connect to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.MaxConnectionAttempts">
            <summary>
            Gets or sets the maximum number of times the client will attempt to connect to the server.
            </summary>
            <remarks>Set <see cref="P:TVA.Communication.ClientBase.MaxConnectionAttempts"/> to -1 for infinite connection attempts.</remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.Handshake">
            <summary>
            Gets or sets a boolean value that indicates whether the client will do a handshake with the server after the connection has been established.
            </summary>
            <remarks>
            <see cref="P:TVA.Communication.ClientBase.Handshake"/> is required when <see cref="P:TVA.Communication.ClientBase.SecureSession"/> is enabled.
            </remarks>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.ClientBase.Handshake"/> is being disabled while <see cref="P:TVA.Communication.ClientBase.SecureSession"/> is enabled.</exception>
        </member>
        <member name="P:TVA.Communication.ClientBase.HandshakeTimeout">
            <summary>
            Gets or sets the number of milliseconds that the client will wait for the server's response to the <see cref="P:TVA.Communication.ClientBase.Handshake"/>.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.ClientBase.SharedSecret">
            <summary>
            Gets or sets the key to be used for ciphering the data exchanged between the client and server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.Encryption">
            <summary>
            Gets or sets the <see cref="T:TVA.Security.Cryptography.CipherStrength"/> to be used for ciphering the data exchanged between the client and server.
            </summary>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.ClientBase.Encryption"/> is being disabled while <see cref="P:TVA.Communication.ClientBase.SecureSession"/> is enabled.</exception>
            <remarks>
            <list type="table">
                <listheader>
                    <term><see cref="P:TVA.Communication.ClientBase.SecureSession"/></term>
                    <description>Key used for <see cref="P:TVA.Communication.ClientBase.Encryption"/></description>
                </listheader>
                <item>
                    <term>Disabled</term>
                    <description><see cref="P:TVA.Communication.ClientBase.SharedSecret"/> is used.</description>
                </item>
                <item>
                    <term>Enabled</term>
                    <description>A private key exchanged between the client and server during the <see cref="P:TVA.Communication.ClientBase.Handshake"/> process is used.</description>
                </item>
            </list>
            </remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.SecureSession">
             <summary>
             Gets or sets a boolean value that indicates whether the data exchanged between the client and server will be encrypted using a private session passphrase.
             </summary>
            <remarks>
            <see cref="P:TVA.Communication.ClientBase.Handshake"/> and <see cref="P:TVA.Communication.ClientBase.Encryption"/> must be enabled in order to use <see cref="P:TVA.Communication.ClientBase.SecureSession"/>.
            </remarks>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.ClientBase.SecureSession"/> is being enabled before enabling <see cref="P:TVA.Communication.ClientBase.Handshake"/>.</exception>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.ClientBase.SecureSession"/> is being enabled before enabling <see cref="P:TVA.Communication.ClientBase.Encryption"/>.</exception>
        </member>
        <member name="P:TVA.Communication.ClientBase.ReceiveTimeout">
            <summary>
            Gets or sets the number of milliseconds after which the client will raise the <see cref="E:TVA.Communication.ClientBase.ReceiveDataTimeout"/> event if no data is received from the server.
            </summary>
            <remarks>Set <see cref="P:TVA.Communication.ClientBase.ReceiveTimeout"/> to -1 to disable this feature.</remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the client for receiving data from the server.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.ClientBase.Compression">
            <summary>
            Gets or sets the <see cref="T:TVA.IO.Compression.CompressionStrength"/> to be used for compressing the data exchanged between the client and server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.PersistSettings">
            <summary>
            Gets or sets a boolean value that indicates whether the client settings are to be saved to the config file.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.SettingsCategory">
            <summary>
            Gets or sets the category under which the client settings are to be saved to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is a null or empty string.</exception>
        </member>
        <member name="P:TVA.Communication.ClientBase.Enabled">
            <summary>
            Gets or sets a boolean value that indicates whether the client is currently enabled.
            </summary>
            <remarks>
            Setting <see cref="P:TVA.Communication.ClientBase.Enabled"/> to true will start connection cycle for the client if it
            is not connected, setting to false will disconnect the client if it is connected.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.TextEncoding">
            <summary>
            Gets or sets the <see cref="T:System.Text.Encoding"/> to be used for the text sent to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.ReceiveDataHandler">
            <summary>
            Gets or sets a <see cref="T:System.Delegate"/> to be invoked instead of the <see cref="E:TVA.Communication.ClientBase.ReceiveDataComplete"/> event when data is received from server.
            </summary>
            <remarks>
            <para>
            This property only needs to be implemented if you need data from the server absolutelty as fast as possible, for most uses this will not be necessary.  
            Setting this property gives the consumer access to the data stream as soon as it's available, but this also bypasses <see cref="P:TVA.Communication.ClientBase.Encryption"/> and 
            <see cref="P:TVA.Communication.ClientBase.Compression"/> on received data.
            </para>
            <para>
            arg1 in <see cref="P:TVA.Communication.ClientBase.ReceiveDataHandler"/> is the buffer containing the data received from the server.<br/>
            arg2 in <see cref="P:TVA.Communication.ClientBase.ReceiveDataHandler"/> is the zero-based starting offset into the buffer containing the data received from the server.<br/>
            arg3 in <see cref="P:TVA.Communication.ClientBase.ReceiveDataHandler"/> is the number of bytes received from the server that is stored in the buffer (arg1) starting at index 0.
            </para>
            </remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.ServerID">
            <summary>
            Gets the server ID.
            </summary>
            <remarks>
            <see cref="P:TVA.Communication.ClientBase.ServerID"/> will be <see cref="F:System.Guid.Empty"/> when <see cref="P:TVA.Communication.ClientBase.Handshake"/> is disabled.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.ClientID">
            <summary>
            Gets the client ID.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.CurrentState">
            <summary>
            Gets the current <see cref="T:TVA.Communication.ClientState"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.TransportProtocol">
            <summary>
            Gets the <see cref="P:TVA.Communication.ClientBase.TransportProtocol"/> used by the client for the transportation of data with the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.ConnectionTime">
            <summary>
            Gets the <see cref="T:TVA.Units.Time"/> for which the client has been connected to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.Name">
            <summary>
            Gets the unique identifier of the client.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.Status">
            <summary>
            Gets the descriptive status of the client.
            </summary>
        </member>
        <member name="T:TVA.Communication.FileClient">
            <summary>
            Represents a communication client based on <see cref="T:System.IO.FileStream"/>.
            </summary>
            <example>
            This example shows how to use <see cref="T:TVA.Communication.FileClient"/> for writing data to a file:
            <code>
            using System;
            using TVA.Communication;
            
            class Program
            {
                static FileClient s_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    s_client = new FileClient(@"File=c:\File.txt");
                    s_client.Initialize();
                    // Register event handlers.
                    s_client.ConnectionAttempt += s_client_ConnectionAttempt;
                    s_client.ConnectionEstablished += s_client_ConnectionEstablished;
                    s_client.ConnectionTerminated += s_client_ConnectionTerminated;
                    s_client.SendDataComplete += s_client_SendDataComplete;
                    // Connect the client.
                    s_client.Connect();
            
                    // Write user input to the file.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        s_client.Send(input + "\r\n");
                    }
            
                    // Disconnect the client on shutdown.
                    s_client.Disconnect();
                }
            
                static void s_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to file.");
                }
            
                static void s_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to file.");
                }
            
                static void s_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from file.");
                }
            
                static void s_client_SendDataComplete(object sender, EventArgs e)
                {
                    Console.WriteLine(string.Format("Sent data - {0}", s_client.TextEncoding.GetString(s_client.Client.SendBuffer)));
                }
            }
            </code>
            This example shows how to use <see cref="T:TVA.Communication.FileClient"/> for reading data to a file:
            <code>
            using System;
            using TVA.Communication;
            
            class Program
            {
                static FileClient s_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    s_client = new FileClient(@"File=c:\File.txt");
                    s_client.Initialize();
                    // Register event handlers.
                    s_client.ConnectionAttempt += s_client_ConnectionAttempt;
                    s_client.ConnectionEstablished += s_client_ConnectionEstablished;
                    s_client.ConnectionTerminated += s_client_ConnectionTerminated;
                    s_client.ReceiveDataComplete += s_client_ReceiveDataComplete;
                    // Connect the client.
                    s_client.Connect();
            
                    // Wait for client to read data.
                    Console.ReadLine();
            
                    // Disconnect the client on shutdown.
                    s_client.Disconnect();
                }
            
                static void s_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to file.");
                }
            
                static void s_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to file.");
                }
            
                static void s_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from file.");
                }
            
                static void s_client_ReceiveDataComplete(object sender, EventArgs&lt;byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data - {0}", s_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultAutoRepeat">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.AutoRepeat"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultReceiveOnDemand">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.ReceiveOnDemand"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultReceiveInterval">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.ReceiveInterval"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultStartingOffset">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.StartingOffset"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultFileOpenMode">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.FileOpenMode"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultFileShareMode">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.FileShareMode"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultFileAccessMode">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.FileAccessMode"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.FileClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.FileClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.FileClient"/>. See <see cref="F:TVA.Communication.FileClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.FileClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.FileClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.FileClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.FileClient.ReceiveData">
            <summary>
            Receives (reads) data from the <see cref="T:System.IO.FileStream"/>.
            </summary>
            <exception cref="T:System.InvalidOperationException"><see cref="M:TVA.Communication.FileClient.ReceiveData"/> is called when <see cref="T:TVA.Communication.FileClient"/> is not connected.</exception>
            <exception cref="T:System.InvalidOperationException"><see cref="M:TVA.Communication.FileClient.ReceiveData"/> is called when <see cref="P:TVA.Communication.FileClient.ReceiveOnDemand"/> is disabled.</exception>
        </member>
        <member name="M:TVA.Communication.FileClient.Disconnect">
            <summary>
            Disconnects the <see cref="T:TVA.Communication.FileClient"/> from the <see cref="T:System.IO.FileStream"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.FileClient"/> to the <see cref="T:System.IO.FileStream"/> asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.FileClient"/> when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.FileClient.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.FileClient"/> settings to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.FileClient"/> settings from the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:TVA.Communication.FileClient"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.FileClient.ValidateConnectionString(System.String)">
            <summary>
            Validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">Connection string to be validated.</param>
            <exception cref="T:System.ArgumentException">File property is missing.</exception>
        </member>
        <member name="M:TVA.Communication.FileClient.GetSessionSecret">
            <summary>
            Gets the secret key to be used for ciphering client data.
            </summary>
            <returns>Cipher secret key.</returns>
        </member>
        <member name="M:TVA.Communication.FileClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends (writes) data to the file asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent (written).</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending (writing) data.</param>
            <param name="length">The number of bytes to be sent (written) from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.FileClient.SendDataAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.OpenFile">
            <summary>
            Connects to the <see cref="T:System.IO.FileStream"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.ReadData">
            <summary>
            Receive (reads) data from the <see cref="T:System.IO.FileStream"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.FileClient.AutoRepeat">
            <summary>
            Gets or sets a boolean value that indicates whether receiving (reading) of data is to be repeated endlessly.
            </summary>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.FileClient.AutoRepeat"/> is enabled when <see cref="P:TVA.Communication.FileClient.FileAccessMode"/> is <see cref="F:System.IO.FileAccess.ReadWrite"/></exception>
        </member>
        <member name="P:TVA.Communication.FileClient.ReceiveOnDemand">
            <summary>
            Gets or sets a boolean value that indicates whether receiving (reading) of data will be initiated manually by calling <see cref="M:TVA.Communication.FileClient.ReceiveData"/>.
            </summary>
            <remarks>
            <see cref="P:TVA.Communication.FileClient.ReceiveInterval"/> will be set to -1 when <see cref="P:TVA.Communication.FileClient.ReceiveOnDemand"/> is enabled.
            </remarks>
        </member>
        <member name="P:TVA.Communication.FileClient.ReceiveInterval">
            <summary>
            Gets or sets the number of milliseconds to pause before receiving (reading) the next available set of data.
            </summary>
            <remarks>
            Set <see cref="P:TVA.Communication.FileClient.ReceiveInterval"/> = -1 to receive (read) data continuously without pausing.
            </remarks>
        </member>
        <member name="P:TVA.Communication.FileClient.StartingOffset">
            <summary>
            Gets or sets the starting point relative to the beginning of the file from where the data is to be received (read).
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is not a positive number.</exception>
        </member>
        <member name="P:TVA.Communication.FileClient.FileOpenMode">
            <summary>
            Gets or sets the <see cref="T:System.IO.FileMode"/> value to be used when opening the file.
            </summary>
        </member>
        <member name="P:TVA.Communication.FileClient.FileShareMode">
            <summary>
            Gets or set the <see cref="T:System.IO.FileShare"/> value to be used when opening the file.
            </summary>
        </member>
        <member name="P:TVA.Communication.FileClient.FileAccessMode">
            <summary>
            Gets or sets the <see cref="T:System.IO.FileAccess"/> value to be used when opening the file.
            </summary>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.FileClient.FileAccessMode"/> is set to <see cref="F:System.IO.FileAccess.ReadWrite"/> when <see cref="P:TVA.Communication.FileClient.AutoRepeat"/> is enabled.</exception>
        </member>
        <member name="P:TVA.Communication.FileClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.FileClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.FileClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.FileClient"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.GoodbyeMessage.MessageIdentifier">
            <summary>
            2-Byte identifier for <see cref="T:TVA.Communication.GoodbyeMessage"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.GoodbyeMessage.ID">
            <summary>
            Gets or sets the disconnecting client's ID.
            </summary>
            <remarks>Max size is 16.</remarks>
        </member>
        <member name="M:TVA.Communication.GoodbyeMessage.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.GoodbyeMessage"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.GoodbyeMessage.#ctor(System.Guid)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.GoodbyeMessage"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.GoodbyeMessage.Initialize(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Initializes the <see cref="T:TVA.Communication.GoodbyeMessage"/> object from the binary image.
            </summary>
        </member>
        <member name="P:TVA.Communication.GoodbyeMessage.BinaryLength">
            <summary>
            Gets the length of the <see cref="P:TVA.Communication.GoodbyeMessage.BinaryImage"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.GoodbyeMessage.BinaryImage">
            <summary>
            Gets the binary representation of the <see cref="T:TVA.Communication.GoodbyeMessage"/> object.
            </summary>
        </member>
        <member name="F:TVA.Communication.HandshakeMessage.MessageIdentifier">
            <summary>
            2-Byte identifier for <see cref="T:TVA.Communication.HandshakeMessage"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.HandshakeMessage.ID">
            <summary>
            Gets or sets the unique identifier.
            </summary>
            <remarks>Max size is 16.</remarks>
        </member>
        <member name="F:TVA.Communication.HandshakeMessage.Secretkey">
            <summary>
            Gets or sets the key for ciphering.
            </summary>
            <remarks>Max size is 260.</remarks>
        </member>
        <member name="M:TVA.Communication.HandshakeMessage.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.HandshakeMessage"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.HandshakeMessage.#ctor(System.Guid,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.HandshakeMessage"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.HandshakeMessage.Initialize(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Initializes the <see cref="T:TVA.Communication.HandshakeMessage"/> object from the binary image.
            </summary>
        </member>
        <member name="P:TVA.Communication.HandshakeMessage.BinaryLength">
            <summary>
            Gets the length of the <see cref="P:TVA.Communication.HandshakeMessage.BinaryImage"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.HandshakeMessage.BinaryImage">
            <summary>
            Gets the binary representation of the <see cref="T:TVA.Communication.HandshakeMessage"/> object.
            </summary>
        </member>
        <member name="T:TVA.Communication.ClientState">
            <summary>
            Indicates the current state of the client.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientState.Connecting">
            <summary>
            Client is establishing connection.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientState.Connected">
            <summary>
            Client has established connection.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientState.Disconnected">
            <summary>
            Client connection is terminated.
            </summary>
        </member>
        <member name="T:TVA.Communication.ServerState">
            <summary>
            Indicates the current state of the server.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerState.Running">
            <summary>
            Server is running.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerState.NotRunning">
            <summary>
            Server is not running.
            </summary>
        </member>
        <member name="T:TVA.Communication.IServer">
            <summary>
            Defines a server involved in server-client communication.
            </summary>
        </member>
        <member name="M:TVA.Communication.IServer.Start">
            <summary>
            Starts the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.IServer.Stop">
            <summary>
            Stops the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.IServer.DisconnectAll">
            <summary>
            Disconnects all of the connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.IServer.DisconnectOne(System.Guid)">
            <summary>
            Disconnects a connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
        </member>
        <member name="M:TVA.Communication.IServer.SendTo(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.IServer.Multicast(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.IServer.SendToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.IServer.MulticastAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="E:TVA.Communication.IServer.ServerStarted">
            <summary>
            Occurs when the server is started.
            </summary>
        </member>
        <member name="E:TVA.Communication.IServer.ServerStopped">
            <summary>
            Occurs when the server is stopped.
            </summary>
        </member>
        <member name="E:TVA.Communication.IServer.HandshakeProcessTimeout">
            <summary>
            Occurs when server-client handshake, when enabled, cannot be performed within the specified <see cref="P:TVA.Communication.IServer.HandshakeTimeout"/> time.
            </summary>
        </member>
        <member name="E:TVA.Communication.IServer.HandshakeProcessUnsuccessful">
            <summary>
            Occurs when server-client handshake, when enabled, cannot be performed successfully due to information mismatch.
            </summary>
        </member>
        <member name="E:TVA.Communication.IServer.ClientConnected">
            <summary>
            Occurs when a client connects to the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client that connected to the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ClientDisconnected">
            <summary>
            Occurs when a client disconnects from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client that disconnected from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.SendClientDataStart">
            <summary>
            Occurs when data is being sent to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client to which the data is being sent.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.SendClientDataComplete">
            <summary>
            Occurs when data has been sent to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client to which the data has been sent.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.SendClientDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when sending data to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client to which the data was being sent.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the <see cref="T:System.Exception"/> encountered when sending data to a client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ReceiveClientDataTimeout">
            <summary>
            Occurs when no data is received from a client for the <see cref="P:TVA.Communication.IServer.ReceiveTimeout"/> time.
            </summary>
        </member>
        <member name="E:TVA.Communication.IServer.ReceiveClientDataComplete">
            <summary>
            Occurs when data is received from a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`3.Argument1"/> is the ID of the client from which data is received.<br/>
            <see cref="F:TVA.EventArgs`3.Argument2"/> is the buffer containing data received from the client starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`3.Argument3"/> is the number of bytes received in the buffer from the client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ReceiveClientDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when receiving data from a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client from which the data was being received.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the <see cref="T:System.Exception"/> encountered when receiving data from a client.
            </remarks>
        </member>
        <member name="P:TVA.Communication.IServer.ConfigurationString">
            <summary>
            Gets or sets the data required by the server to initialize.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.MaxClientConnections">
            <summary>
            Gets or sets the maximum number of clients that can connect to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.Handshake">
            <summary>
            Gets or sets a boolean value that indicates whether the server will do a handshake with the clients after the connection has been established.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.HandshakeTimeout">
            <summary>
            Gets or sets the number of milliseconds that the server will wait for the clients to initiate the <see cref="P:TVA.Communication.IServer.Handshake"/> process.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.SharedSecret">
            <summary>
            Gets or sets the key to be used for ciphering the data exchanged between the server and clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.Encryption">
            <summary>
            Gets or sets the <see cref="T:TVA.Security.Cryptography.CipherStrength"/> to be used for ciphering the data exchanged between the server and clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.SecureSession">
            <summary>
            Gets or sets a boolean value that indicates whether the data exchanged between the server and clients will be encrypted using a private session passphrase.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.ReceiveTimeout">
            <summary>
            Gets or sets the number of milliseconds after which the server will raise the <see cref="E:TVA.Communication.IServer.ReceiveClientDataTimeout"/> event if no data is received from a client.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the server for receiving data from the clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.Compression">
            <summary>
            Gets or sets the <see cref="T:TVA.IO.Compression.CompressionStrength"/> to be used for compressing the data exchanged between the server and clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.TextEncoding">
            <summary>
            Gets or sets the <see cref="T:System.Text.Encoding"/> to be used for the text sent to the connected clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.ReceiveClientDataHandler">
            <summary>
            Gets or sets a <see cref="T:System.Delegate"/> to be invoked instead of the <see cref="E:TVA.Communication.IServer.ReceiveClientDataComplete"/> event when data is received from clients.
            </summary>
            <remarks>
            arg1 in <see cref="P:TVA.Communication.IServer.ReceiveClientDataHandler"/> is the ID or the client from which data is received.<br/>
            arg2 in <see cref="P:TVA.Communication.IServer.ReceiveClientDataHandler"/> is the buffer containing data received from the client starting at index zero.<br/>
            arg3 in <see cref="P:TVA.Communication.IServer.ReceiveClientDataHandler"/> is the zero-based starting offset into the buffer containing the data received from the server.<br/>
            arg4 in <see cref="P:TVA.Communication.IServer.ReceiveClientDataHandler"/> is the number of bytes received from the client that is stored in the buffer (arg2).
            </remarks>
        </member>
        <member name="P:TVA.Communication.IServer.CurrentState">
            <summary>
            Gets the current <see cref="T:TVA.Communication.ServerState"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.TransportProtocol">
            <summary>
            Gets the <see cref="P:TVA.Communication.IServer.TransportProtocol"/> used by the server for the transportation of data with the clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.ServerID">
            <summary>
            Gets the server's ID.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.ClientIDs">
            <summary>
            Gets the IDs of clients connected to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.RunTime">
            <summary>
            Gets the <see cref="T:TVA.Units.Time"/> for which the server has been running.
            </summary>
        </member>
        <member name="T:TVA.Communication.NamespaceDoc">
            <summary>
            Contains high-level classes and components related to any data communications including sockets, serial and file based transports used to simplify and standardize data access.
            </summary>
        </member>
        <member name="T:TVA.Communication.Payload">
            <summary>
            A helper class containing methods for manipulation of payload.
            </summary>
        </member>
        <member name="F:TVA.Communication.Payload.LengthSegment">
            <summary>
            Specifies the length of the segment in a "Payload-Aware" transmission that contains the payload length.
            </summary>
        </member>
        <member name="F:TVA.Communication.Payload.DefaultMarker">
            <summary>
            Default byte sequence used to mark the beginning of the payload in a "Payload-Aware" transmissions.
            </summary>
        </member>
        <member name="M:TVA.Communication.Payload.AddHeader(System.Byte[]@,System.Int32@,System.Int32@,System.Byte[])">
            <summary>
            Adds header containing the <paramref name="marker"/> to the payload in the <paramref name="buffer"/> for "Payload-Aware" transmission.
            </summary>
            <param name="buffer">The buffer containing the payload.</param>
            <param name="offset">The offset in the <paramref name="buffer"/> at which the payload starts.</param>
            <param name="length">The lenght of the payload in the <paramref name="buffer"/> starting at the <paramref name="offset"/>.</param>
            <param name="marker">The byte sequence used to mark the beginning of the payload in a "Payload-Aware" transmissions.</param>
        </member>
        <member name="M:TVA.Communication.Payload.HasHeader(System.Byte[],System.Byte[])">
            <summary>
            Determines whether or not the <paramref name="buffer"/> contains the header information of a "Payload-Aware" transmission.
            </summary>
            <param name="buffer">The buffer to be checked at index zero.</param>
            <param name="marker">The byte sequence used to mark the beginning of the payload in a "Payload-Aware" transmissions.</param>
            <returns>true if the buffer contains "Payload-Aware" transmission header; otherwise false.</returns>
        </member>
        <member name="M:TVA.Communication.Payload.ExtractLength(System.Byte[],System.Byte[])">
            <summary>
            Determines the length of a payload in a "Payload-Aware" transmission from the payload header information.
            </summary>
            <param name="buffer">The buffer containg payload header information starting at index zero.</param>
            <param name="marker">The byte sequence used to mark the beginning of the payload in a "Payload-Aware" transmissions.</param>
            <returns>Length of the payload.</returns>
        </member>
        <member name="M:TVA.Communication.Payload.ProcessReceived(System.Byte[]@,System.Int32@,System.Int32@,TVA.Security.Cryptography.CipherStrength,System.String,TVA.IO.Compression.CompressionStrength)">
            <summary>
            Performs the necessary uncompression and decryption on the data contained in the <paramref name="buffer"/>.
            </summary>
            <param name="buffer">The buffer containing the data to be processed.</param>
            <param name="offset">The offset in the <paramref name="buffer"/> from where data is to be processed.</param>
            <param name="length">The length of data in <paramref name="buffer"/> starting at the <paramref name="offset"/>.</param>
            <param name="cryptoLevel">One of the <see cref="T:TVA.Security.Cryptography.CipherStrength"/> values.</param>
            <param name="cryptoKey">The key to be used for decrypting the data in the <paramref name="buffer"/>.</param>
            <param name="compressLevel">One of the <see cref="T:TVA.IO.Compression.CompressionStrength"/> values.</param>
        </member>
        <member name="M:TVA.Communication.Payload.ProcessTransmit(System.Byte[]@,System.Int32@,System.Int32@,TVA.Security.Cryptography.CipherStrength,System.String,TVA.IO.Compression.CompressionStrength)">
            <summary>
            Performs the necessary compression and encryption on the data contained in the <paramref name="buffer"/>.
            </summary>
            <param name="buffer">The buffer containing the data to be processed.</param>
            <param name="offset">The offset in the <paramref name="buffer"/> from where data is to be processed.</param>
            <param name="length">The length of data in <paramref name="buffer"/> starting at the <paramref name="offset"/>.</param>
            <param name="cryptoLevel">One of the <see cref="T:TVA.Security.Cryptography.CipherStrength"/> values.</param>
            <param name="cryptoKey">The key to be used for encrypting the data in the <paramref name="buffer"/>.</param>
            <param name="compressLevel">One of the <see cref="T:TVA.IO.Compression.CompressionStrength"/> values.</param>
        </member>
        <member name="T:TVA.Communication.SerialClient">
            <summary>
            Represents a communication client based on <see cref="T:System.IO.Ports.SerialPort"/>.
            </summary>
            <example>
            This example shows how to use <see cref="T:TVA.Communication.SerialClient"/> for communicating with <see cref="T:System.IO.Ports.SerialPort"/>:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            
            class Program
            {
                static SerialClient m_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    m_client = new SerialClient("Port=COM1; BaudRate=9600; Parity=None; StopBits=One; DataBits=8; DtrEnable=False; RtsEnable=False");
                    m_client.Initialize();
                    // Register event handlers.
                    m_client.ConnectionAttempt += m_client_ConnectionAttempt;
                    m_client.ConnectionEstablished += m_client_ConnectionEstablished;
                    m_client.ConnectionTerminated += m_client_ConnectionTerminated;
                    m_client.SendDataComplete += m_client_SendDataComplete;
                    m_client.ReceiveDataComplete += m_client_ReceiveDataComplete;
                    // Connect the client.
                    m_client.Connect();
            
                    // Write user input to the serial port.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        m_client.Send(input);
                    }
            
                    // Disconnect the client on shutdown.
                    m_client.Disconnect();
                }
            
                static void m_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to serial port.");
                }
            
                static void m_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to serial port.");
                }
            
                static void m_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from serial port.");
                }
            
                static void m_client_SendDataComplete(object sender, EventArgs e)
                {
                    Console.WriteLine(string.Format("Sent data - {0}", m_client.TextEncoding.GetString(m_client.Client.SendBuffer)));
                }
            
                static void m_client_ReceiveDataComplete(object sender, EventArgs&lt;byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data - {0}", m_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.SerialClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SerialClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SerialClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.SerialClient"/>. See <see cref="F:TVA.Communication.SerialClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.SerialClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SerialClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.SerialClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.SerialClient.Disconnect">
            <summary>
            Disconnects the <see cref="T:TVA.Communication.SerialClient"/> from the <see cref="T:System.IO.Ports.SerialPort"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.SerialClient"/> to the <see cref="T:System.IO.Ports.SerialPort"/> asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.SerialClient"/> when it is connected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.SerialClient.ValidateConnectionString(System.String)">
            <summary>
            Validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">Connection string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentException">BaudRate property is missing.</exception>
            <exception cref="T:System.ArgumentException">Parity property is missing.</exception>
            <exception cref="T:System.ArgumentException">StopBits property is missing.</exception>
            <exception cref="T:System.ArgumentException">DataBits property is missing.</exception>
        </member>
        <member name="M:TVA.Communication.SerialClient.GetSessionSecret">
            <summary>
            Gets the secret key to be used for ciphering client data.
            </summary>
            <returns>Cipher secret key.</returns>
        </member>
        <member name="M:TVA.Communication.SerialClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends (writes) data to the <see cref="T:System.IO.Ports.SerialPort"/> asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent (written).</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending (writing) data.</param>
            <param name="length">The number of bytes to be sent (written) from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.SerialClient.SendDataAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.OpenPort">
            <summary>
            Connects to the <see cref="T:System.IO.Ports.SerialPort"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.SerialPort_DataReceived(System.Object,System.IO.Ports.SerialDataReceivedEventArgs)">
            <summary>
            Receive (read) data from the <see cref="T:System.IO.Ports.SerialPort"/> (.NET serial port class raises this event when data is available).
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.SerialPort_ErrorReceived(System.Object,System.IO.Ports.SerialErrorReceivedEventArgs)">
            <summary>
            Receive (read) error data from the <see cref="T:System.IO.Ports.SerialPort"/> (.NET serial port class raises this event when error occurs).
            </summary>
        </member>
        <member name="P:TVA.Communication.SerialClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.SerialClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SerialClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.SerialClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SerialClient.ReceivedBytesThreshold">
            <summary>
            Gets or sets the needed number of bytes in the internal input buffer before a <see cref="M:TVA.Communication.ClientBase.OnReceiveDataComplete(System.Byte[],System.Int32)"/> event occurs.
            </summary>
        </member>
        <member name="T:TVA.Communication.ServerBase">
            <summary>
            Base class for a server involved in server-client communication.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultMaxClientConnections">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.MaxClientConnections"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultHandshake">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.Handshake"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultHandshakeTimeout">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.HandshakeTimeout"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultSharedSecret">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.SharedSecret"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultEncryption">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.Encryption"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultSecureSession">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.SecureSession"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultReceiveTimeout">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ReceiveTimeout"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultReceiveBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ReceiveBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultCompression">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.Compression"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultPersistSettings">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultSettingsCategory">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.SettingsCategory"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.#ctor">
            <summary>
            Initializes a new instance of the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.#ctor(TVA.Communication.TransportProtocol,System.String)">
            <summary>
            Initializes a new instance of the server.
            </summary>
            <param name="transportProtocol">One of the <see cref="P:TVA.Communication.ServerBase.TransportProtocol"/> values.</param>
            <param name="configurationString">The data used by the server for initialization.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Start">
            <summary>
            When overridden in a derived class, starts the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.Stop">
            <summary>
            When overridden in a derived class, stops the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.DisconnectOne(System.Guid)">
            <summary>
            When overridden in a derived class, disconnects a connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.ValidateConfigurationString(System.String)">
            <summary>
            When overridden in a derived class, validates the specified <paramref name="configurationString"/>.
            </summary>
            <param name="configurationString">The configuration string to be validated.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.GetSessionSecret(System.Guid)">
            <summary>
            When overridden in a derived class, returns the secret key used for ciphering client data.
            </summary>
            <param name="clientID">ID of the client whose secret key is to be retrieved.</param>
            <returns>Secret key of the specified client.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendDataToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.Initialize">
            <summary>
            Initializes the server.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ServerBase.Initialize"/> is to be called by user-code directly only if the server is not consumed through the designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ServerBase.BeginInit">
            <summary>
            Performs necessary operations before the server properties are initialized.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ServerBase.BeginInit"/> should never be called by user-code directly. This method exists solely for use by the designer if the server is consumed through 
            the designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ServerBase.EndInit">
            <summary>
            Performs necessary operations after the server properties are initialized.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ServerBase.EndInit"/> should never be called by user-code directly. This method exists solely for use by the designer if the server is consumed through the 
            designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ServerBase.SaveSettings">
            <summary>
            Saves server settings to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><see cref="P:TVA.Communication.ServerBase.SettingsCategory"/> has a value of null or empty string.</exception>
        </member>
        <member name="M:TVA.Communication.ServerBase.LoadSettings">
            <summary>
            Loads saved server settings from the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><see cref="P:TVA.Communication.ServerBase.SettingsCategory"/> has a value of null or empty string.</exception>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendTo(System.Guid,System.String)">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The plain-text data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendTo(System.Guid,System.Object)">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="serializableObject">The serializable object that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendTo(System.Guid,System.Byte[])">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The binary data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendTo(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Multicast(System.String)">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="data">The plain-text data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Multicast(System.Object)">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="serializableObject">The serializable object that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Multicast(System.Byte[])">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="data">The binary data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Multicast(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.DisconnectAll">
            <summary>
            Disconnects all of the connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendToAsync(System.Guid,System.String)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The plain-text data that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendToAsync(System.Guid,System.Object)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="serializableObject">The serializable object that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendToAsync(System.Guid,System.Byte[])">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The binary data that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.MulticastAsync(System.String)">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="data">The plain-text data that is to be sent.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.MulticastAsync(System.Object)">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="serializableObject">The serializable object that is to be sent.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.MulticastAsync(System.Byte[])">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="data">The binary data that is to be sent.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.MulticastAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnServerStarted">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ServerStarted"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnServerStopped">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ServerStopped"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnHandshakeProcessTimeout">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.HandshakeProcessTimeout"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnHandshakeProcessUnsuccessful">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.HandshakeProcessUnsuccessful"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnClientConnected(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ClientConnected"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ClientConnected"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnClientDisconnected(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ClientDisconnected"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ClientDisconnected"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnSendClientDataStart(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.SendClientDataStart"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataStart"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnSendClientDataComplete(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.SendClientDataComplete"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataComplete"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnSendClientDataException(System.Guid,System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnReceiveClientDataTimeout(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataTimeout"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataTimeout"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnReceiveClientDataComplete(System.Guid,System.Byte[],System.Int32)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataComplete"/> event.
            </summary>
            <param name="clientID">ID of the client from which data is received.</param>
            <param name="data">Data received from the client.</param>
            <param name="size">Number of bytes received from the client.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnReceiveClientDataException(System.Guid,System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the server and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.ReStart">
            <summary>
            Re-starts the server if currently running.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.Create(System.String)">
            <summary>
            Create a communications server
            </summary>
            <remarks>
            Note that typical configuration string should be prefixed with a "protocol=tcp" or a "protocol=udp"
            </remarks>
            <param name="configurationString">The configuration string for the server.</param>
            <returns>A communications server.</returns>
        </member>
        <member name="E:TVA.Communication.ServerBase.ServerStarted">
            <summary>
            Occurs when the server is started.
            </summary>
        </member>
        <member name="E:TVA.Communication.ServerBase.ServerStopped">
            <summary>
            Occurs when the server is stopped.
            </summary>
        </member>
        <member name="E:TVA.Communication.ServerBase.HandshakeProcessTimeout">
            <summary>
            Occurs when server-client handshake, when enabled, cannot be performed within the specified <see cref="P:TVA.Communication.ServerBase.HandshakeTimeout"/> time.
            </summary>
        </member>
        <member name="E:TVA.Communication.ServerBase.HandshakeProcessUnsuccessful">
            <summary>
            Occurs when server-client handshake, when enabled, cannot be performed successfully due to information mismatch.
            </summary>
        </member>
        <member name="E:TVA.Communication.ServerBase.ClientConnected">
            <summary>
            Occurs when a client connects to the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client that connected to the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.ClientDisconnected">
            <summary>
            Occurs when a client disconnects from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client that disconnected from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.SendClientDataStart">
            <summary>
            Occurs when data is being sent to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client to which the data is being sent.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.SendClientDataComplete">
            <summary>
            Occurs when data has been sent to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client to which the data has been sent.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.SendClientDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when sending data to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client to which the data was being sent.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the <see cref="T:System.Exception"/> encountered when sending data to a client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.ReceiveClientDataTimeout">
            <summary>
            Occurs when no data is received from a client for the <see cref="P:TVA.Communication.ServerBase.ReceiveTimeout"/> time.
            </summary>
        </member>
        <member name="E:TVA.Communication.ServerBase.ReceiveClientDataComplete">
            <summary>
            Occurs when data is received from a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`3.Argument1"/> is the ID of the client from which data is received.<br/>
            <see cref="F:TVA.EventArgs`3.Argument2"/> is the buffer containing data received from the client starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`3.Argument3"/> is the number of bytes received in the buffer from the client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.ReceiveClientDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when receiving data from a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client from which the data was being received.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the <see cref="T:System.Exception"/> encountered when receiving data from a client.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.ConfigurationString">
            <summary>
            Gets or sets the data required by the server to initialize.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.MaxClientConnections">
            <summary>
            Gets or sets the maximum number of clients that can connect to the server.
            </summary>
            <remarks>
            Set <see cref="P:TVA.Communication.ServerBase.MaxClientConnections"/> to -1 to allow infinite client connections.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.Handshake">
            <summary>
            Gets or sets a boolean value that indicates whether the server will do a handshake with the clients after the connection has been established.
            </summary>
            <remarks>
            <see cref="P:TVA.Communication.ServerBase.Handshake"/> is required when <see cref="P:TVA.Communication.ServerBase.SecureSession"/> is enabled.
            </remarks>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.ServerBase.Handshake"/> is being disabled while <see cref="P:TVA.Communication.ServerBase.SecureSession"/> is enabled.</exception>
        </member>
        <member name="P:TVA.Communication.ServerBase.HandshakeTimeout">
            <summary>
            Gets or sets the number of milliseconds that the server will wait for the clients to initiate the <see cref="P:TVA.Communication.ServerBase.Handshake"/> process.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.ServerBase.SharedSecret">
            <summary>
            Gets or sets the key to be used for ciphering the data exchanged between the server and clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.Encryption">
            <summary>
            Gets or sets the <see cref="T:TVA.Security.Cryptography.CipherStrength"/> to be used for ciphering the data exchanged between the server and clients.
            </summary>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.ServerBase.Encryption"/> is being disabled while <see cref="P:TVA.Communication.ServerBase.SecureSession"/> is enabled.</exception>
            <remarks>
            <list type="table">
                <listheader>
                    <term><see cref="P:TVA.Communication.ServerBase.SecureSession"/></term>
                    <description>Key used for <see cref="P:TVA.Communication.ServerBase.Encryption"/></description>
                </listheader>
                <item>
                    <term>Disabled</term>
                    <description><see cref="P:TVA.Communication.ServerBase.SharedSecret"/> is used.</description>
                </item>
                <item>
                    <term>Enabled</term>
                    <description>A private key exchanged between the server and client during the <see cref="P:TVA.Communication.ServerBase.Handshake"/> process is used.</description>
                </item>
            </list>
            </remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.SecureSession">
             <summary>
             Gets or sets a boolean value that indicates whether the data exchanged between the server and clients will be encrypted using a private session passphrase.
             </summary>
            <remarks>
            <see cref="P:TVA.Communication.ServerBase.Handshake"/> and <see cref="P:TVA.Communication.ServerBase.Encryption"/> must be enabled in order to use <see cref="P:TVA.Communication.ServerBase.SecureSession"/>.
            </remarks>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.ServerBase.SecureSession"/> is being enabled before enabling <see cref="P:TVA.Communication.ServerBase.Handshake"/>.</exception>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.ServerBase.SecureSession"/> is being enabled before enabling <see cref="P:TVA.Communication.ServerBase.Encryption"/>.</exception>
        </member>
        <member name="P:TVA.Communication.ServerBase.ReceiveTimeout">
            <summary>
            Gets or sets the number of milliseconds after which the server will raise the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataTimeout"/> event if no data is received from a client.
            </summary>
            <remarks>Set <see cref="P:TVA.Communication.ServerBase.ReceiveTimeout"/> to -1 to disable this feature.</remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the server for receiving data from the clients.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.ServerBase.Compression">
            <summary>
            Gets or sets the <see cref="T:TVA.IO.Compression.CompressionStrength"/> to be used for compressing the data exchanged between the server and clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.PersistSettings">
            <summary>
            Gets or sets a boolean value that indicates whether the server settings are to be saved to the config file.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.SettingsCategory">
            <summary>
            Gets or sets the category under which the server settings are to be saved to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is a null or empty string.</exception>
        </member>
        <member name="P:TVA.Communication.ServerBase.Enabled">
            <summary>
            Gets or sets a boolean value that indicates whether the server is currently enabled.
            </summary>
            <remarks>
            Setting <see cref="P:TVA.Communication.ServerBase.Enabled"/> to true will start the server if it is not running, setting
            to false will stop the server if it is running.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.TextEncoding">
            <summary>
            Gets or sets the <see cref="T:System.Text.Encoding"/> to be used for the text sent to the connected clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.ReceiveClientDataHandler">
            <summary>
            Gets or sets a <see cref="T:System.Delegate"/> to be invoked instead of the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataComplete"/> event when data is received from clients.
            </summary>
            <remarks>
            <para>
            This property only needs to be implemented if you need data from the clients absolutelty as fast as possible, for most uses this will not be necessary.  
            Setting this property gives the consumer access to the data stream as soon as it's available, but this also bypasses <see cref="P:TVA.Communication.ServerBase.Encryption"/> and 
            <see cref="P:TVA.Communication.ServerBase.Compression"/> on received data.
            </para>
            <para>
            arg1 in <see cref="P:TVA.Communication.ServerBase.ReceiveClientDataHandler"/> is the ID or the client from which data is received.<br/>
            arg2 in <see cref="P:TVA.Communication.ServerBase.ReceiveClientDataHandler"/> is the buffer containing data received from the client starting at index zero.<br/>
            arg3 in <see cref="P:TVA.Communication.ServerBase.ReceiveClientDataHandler"/> is the zero based starting offset into the buffer containing the data received from the server.<br/>
            arg4 in <see cref="P:TVA.Communication.ServerBase.ReceiveClientDataHandler"/> is the number of bytes received from the client that is stored in the buffer (arg2).
            </para>
            </remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.CurrentState">
            <summary>
            Gets the current <see cref="T:TVA.Communication.ServerState"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.TransportProtocol">
            <summary>
            Gets the <see cref="P:TVA.Communication.ServerBase.TransportProtocol"/> used by the server for the transportation of data with the clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.ServerID">
            <summary>
            Gets the server's ID.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.ClientIDs">
            <summary>
            Gets the IDs of clients connected to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.RunTime">
            <summary>
            Gets the <see cref="T:TVA.Units.Time"/> for which the server has been running.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.Name">
            <summary>
            Gets the unique identifier of the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.Status">
            <summary>
            Gets the descriptive status of the server.
            </summary>
        </member>
        <member name="T:TVA.Communication.TcpClient">
            <summary>
            Represents a TCP-based communication client.
            </summary>
            <remarks>
            The <see cref="P:TVA.Communication.TcpClient.Client"/> socket can be bound to a specified interface on a machine with multiple interfaces by 
            specifying the interface in the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> (Example: "Server=localhost:8888; Interface=127.0.0.1")
            </remarks>
            <example>
            This example shows how to use the <see cref="T:TVA.Communication.TcpClient"/> component:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            using TVA.Security.Cryptography;
            using TVA.IO.Compression;
            
            class Program
            {
                static TcpClient m_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    m_client = new TcpClient("Server=localhost:8888");
                    m_client.Handshake = false;
                    m_client.PayloadAware = false;
                    m_client.ReceiveTimeout = -1;
                    m_client.MaxConnectionAttempts = 5;
                    m_client.Encryption = CipherStrength.None;
                    m_client.Compression = CompressionStrength.NoCompression;
                    m_client.SecureSession = false;
                    m_client.Initialize();
                    // Register event handlers.
                    m_client.ConnectionAttempt += m_client_ConnectionAttempt;
                    m_client.ConnectionEstablished += m_client_ConnectionEstablished;
                    m_client.ConnectionTerminated += m_client_ConnectionTerminated;
                    m_client.ReceiveDataComplete += m_client_ReceiveDataComplete;
                    // Connect the client.
                    m_client.Connect();
            
                    // Transmit user input to the server.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        m_client.Send(input);
                    }
            
                    // Disconnect the client on shutdown.
                    m_client.Disconnect();
                }
            
                static void m_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to server.");
                }
            
                static void m_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to server.");
                }
            
                static void m_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from server.");
                }
            
                static void m_client_ReceiveDataComplete(object sender, EventArgs&lt;byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data - {0}.", m_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.TcpClient.DefaultPayloadAware">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpClient.PayloadAware"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.TcpClient"/>. See <see cref="F:TVA.Communication.TcpClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.TcpClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.TcpClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.TcpClient.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.TcpClient"/> settings to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.TcpClient"/> settings from the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.Disconnect">
            <summary>
            Disconnects the <see cref="T:TVA.Communication.TcpClient"/> from the connected server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.TcpClient"/> to the server asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.TcpClient"/> when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.TcpClient.ValidateConnectionString(System.String)">
            <summary>
            Validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">Connection string to be validated.</param>
            <exception cref="T:System.ArgumentException">Server property is missing.</exception>
            <exception cref="T:System.FormatException">Server property is invalid.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Server port value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.TcpClient.GetSessionSecret">
            <summary>
            Gets the secret key to be used for ciphering client data.
            </summary>
            <returns>Cipher secret key.</returns>
        </member>
        <member name="M:TVA.Communication.TcpClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.TcpClient.ConnectAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous connect operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.SendPayloadAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceiveHandshakeAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of handshake response data.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceiveHandshakeAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of handshake response data.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceivePayloadAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceivePayloadAwareAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceivePayloadAwareAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceivePayloadUnawareAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceivePayloadUnawareAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.TerminateConnection(TVA.Communication.TransportProvider{System.Net.Sockets.Socket},System.Boolean)">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.PayloadAware">
            <summary>
            Gets or sets a boolean value that indicates whether the payload boundaries are to be preserved during transmission.
            </summary>
            <remarks><see cref="P:TVA.Communication.TcpClient.PayloadAware"/> feature must be enabled if either <see cref="P:TVA.Communication.ServerBase.Encryption"/> or <see cref="P:TVA.Communication.ServerBase.Compression"/> is enabled.</remarks>
        </member>
        <member name="P:TVA.Communication.TcpClient.PayloadMarker">
            <summary>
            Gets or sets the byte sequence used to mark the beginning of a payload in a <see cref="P:TVA.Communication.TcpClient.PayloadAware"/> transmission.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is null or empty buffer.</exception>
        </member>
        <member name="P:TVA.Communication.TcpClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.TcpClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.TcpClient"/>.
            </summary>
        </member>
        <member name="T:TVA.Communication.TcpServer">
            <summary>
            Represents a TCP-based communication server.
            </summary>
            <remarks>
            The <see cref="P:TVA.Communication.TcpServer.Server"/> socket can be bound to a specified interface on a machine with multiple interfaces by 
            specifying the interface in the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> (Example: "Port=8888; Interface=127.0.0.1")
            </remarks>
            <example>
            This example shows how to use the <see cref="T:TVA.Communication.TcpServer"/> component:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            using TVA.Security.Cryptography;
            using TVA.IO.Compression;
            
            class Program
            {
                static TcpServer m_server;
            
                static void Main(string[] args)
                {
                    // Initialize the server.
                    m_server = new TcpServer("Port=8888");
                    m_server.Handshake = false;
                    m_server.PayloadAware = false;
                    m_server.ReceiveTimeout = -1;
                    m_server.Encryption = CipherStrength.None;
                    m_server.Compression = CompressionStrength.NoCompression;
                    m_server.SecureSession = false;
                    m_server.Initialize();
                    // Register event handlers.
                    m_server.ServerStarted += m_server_ServerStarted;
                    m_server.ServerStopped += m_server_ServerStopped;
                    m_server.ClientConnected += m_server_ClientConnected;
                    m_server.ClientDisconnected += m_server_ClientDisconnected;
                    m_server.ReceiveClientDataComplete += m_server_ReceiveClientDataComplete;
                    // Start the server.
                    m_server.Start();
            
                    // Multicast user input to all connected clients.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        m_server.Multicast(input);
                    }
            
                    // Stop the server on shutdown.
                    m_server.Stop();
                }
            
                static void m_server_ServerStarted(object sender, EventArgs e)
                {
                    Console.WriteLine("Server has been started!");
                }
            
                static void m_server_ServerStopped(object sender, EventArgs e)
                {
                    Console.WriteLine("Server has been stopped!");
                }
            
                static void m_server_ClientConnected(object sender, EventArgs&lt;Guid&gt; e)
                {
                    Console.WriteLine(string.Format("Client connected - {0}.", e.Argument));
                }
            
                static void m_server_ClientDisconnected(object sender, EventArgs&lt;Guid&gt; e)
                {
                    Console.WriteLine(string.Format("Client disconnected - {0}.", e.Argument));
                }
            
                static void m_server_ReceiveClientDataComplete(object sender, EventArgs&lt;Guid, byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data from {0} - {1}.", e.Argument1, m_server.TextEncoding.GetString(e.Argument2, 0, e.Argument3)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.TcpServer.DefaultPayloadAware">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpServer.PayloadAware"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpServer.DefaultConfigurationString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
            <param name="configString">Config string of the <see cref="T:TVA.Communication.TcpServer"/>. See <see cref="F:TVA.Communication.TcpServer.DefaultConfigurationString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.TcpServer.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.TcpServer"/>.</param>
        </member>
        <member name="M:TVA.Communication.TcpServer.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.TcpServer"/> settings to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.TcpServer"/> settings from the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.Stop">
            <summary>
            Stops the <see cref="T:TVA.Communication.TcpServer"/> synchronously and disconnects all connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.Start">
            <summary>
            Starts the <see cref="T:TVA.Communication.TcpServer"/> synchronously and begins accepting client connections asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to <see cref="M:TVA.Communication.TcpServer.Start"/> the <see cref="T:TVA.Communication.TcpServer"/> when it is running.</exception>
        </member>
        <member name="M:TVA.Communication.TcpServer.DisconnectOne(System.Guid)">
            <summary>
            Disconnects the specified connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.TcpServer.Client(System.Guid)">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object associated with the specified client ID.
            </summary>
            <param name="clientID">ID of the client.</param>
            <returns>An <see cref="T:TVA.Communication.TransportProvider`1"/> object.</returns>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.TcpServer.ValidateConfigurationString(System.String)">
            <summary>
            Validates the specified <paramref name="configurationString"/>.
            </summary>
            <param name="configurationString">Configuration string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Port property value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.TcpServer.GetSessionSecret(System.Guid)">
            <summary>
            Gets the secret key to be used for ciphering client data.
            </summary>
            <param name="clientID">ID of the client whose secret key is to be retrieved.</param>
            <returns>Cipher secret key of the client with the specified <paramref name="clientID"/>.</returns>
        </member>
        <member name="M:TVA.Communication.TcpServer.SendDataToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.TcpServer.AcceptAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous accept operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.SendPayloadAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceiveHandshakeAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of handshake data.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceiveHandshakeAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of handshake data.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceivePayloadAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceivePayloadAwareAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceivePayloadAwareAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceivePayloadUnawareAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceivePayloadUnawareAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.TerminateConnection(TVA.Communication.TransportProvider{System.Net.Sockets.Socket},System.Boolean)">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpServer.PayloadAware">
            <summary>
            Gets or sets a boolean value that indicates whether the payload boundaries are to be preserved during transmission.
            </summary>
            <remarks><see cref="P:TVA.Communication.TcpServer.PayloadAware"/> feature must be enabled if either <see cref="P:TVA.Communication.ServerBase.Encryption"/> or <see cref="P:TVA.Communication.ServerBase.Compression"/> is enabled.</remarks>
        </member>
        <member name="P:TVA.Communication.TcpServer.PayloadMarker">
            <summary>
            Gets or sets the byte sequence used to mark the beginning of a payload in a <see cref="P:TVA.Communication.TcpServer.PayloadAware"/> transmission.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is null or empty buffer.</exception>
        </member>
        <member name="P:TVA.Communication.TcpServer.Server">
            <summary>
            Gets the <see cref="T:System.Net.Sockets.Socket"/> object for the <see cref="T:TVA.Communication.TcpServer"/>.
            </summary>
        </member>
        <member name="T:TVA.Communication.Transport">
            <summary>
            A helper class containing methods related to server-client communication.
            </summary>
        </member>
        <member name="F:TVA.Communication.Transport.PortRangeLow">
            <summary>
            Specifies the lowest valid port number for a <see cref="T:System.Net.Sockets.Socket"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.Transport.PortRangeHigh">
            <summary>
            Specifies the highest valid port number for a <see cref="T:System.Net.Sockets.Socket"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.Transport.EndpointFormatRegex">
            <summary>
            Regular expression used to validate the format for an endpoint.
            </summary>
            <remarks>
            <para>
            Matches the following valid input:<br/>
            - localhost:80<br/>
            - 127.0.0.1:80<br/>
            - [::1]:80<br/>
            - [FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80
            </para>
            </remarks>
        </member>
        <member name="M:TVA.Communication.Transport.CreateEndPoint(System.String,System.Int32)">
            <summary>
            Creates an <see cref="T:System.Net.IPEndPoint"/> for the specified host name and port number.
            </summary>
            <param name="hostNameOrAddress">The host name or IP address to resolve.</param>
            <param name="port">The port number to be associated with the address.</param>
            <returns>An <see cref="T:System.Net.IPEndPoint"/> object.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.CreateSocket(System.String,System.Int32,System.Net.Sockets.ProtocolType)">
            <summary>
            Creates a <see cref="T:System.Net.Sockets.Socket"/> for the specified <paramref name="port"/> and <paramref name="protocol"/>.
            </summary>
            <param name="address">The local address where the <see cref="T:System.Net.Sockets.Socket"/> will be bound.</param>
            <param name="port">The port number at which the <see cref="T:System.Net.Sockets.Socket"/> will be bound.</param>
            <param name="protocol">One of the <see cref="T:System.Net.Sockets.ProtocolType"/> values.</param>
            <returns>An <see cref="T:System.Net.Sockets.Socket"/> object.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.IsIPv6IP(System.Net.IPAddress)">
            <summary>
            Determines if the specified <paramref name="ipAddress"/> is an IPv6 IP.
            </summary>
            <param name="ipAddress">IP address to check.</param>
            <returns>true if the <paramref name="ipAddress"/> is IPv6 IP; otherwise false.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.IsMulticastIP(System.Net.IPAddress)">
            <summary>
            Determines if the specified <paramref name="ipAddress"/> is a multicast IP.
            </summary>
            <param name="ipAddress">IP address to check.</param>
            <returns>true if the <paramref name="ipAddress"/> is multicast IP; otherwise false.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.IsPortNumberValid(System.String)">
            <summary>
            Determines whether the specified port is valid.
            </summary>
            <param name="port">The port number to be validated.</param>
            <returns>True if the port number is valid.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.IsDestinationReachable(System.Net.IPEndPoint)">
            <summary>
            Determines if the specified UDP destination is listening for data.
            </summary>
            <param name="targetIPEndPoint">The <see cref="T:System.Net.IPEndPoint"/> for the UDP destination to be checked.</param>
            <returns>true if the UDP destination is listening for data; otherwise false.</returns>
        </member>
        <member name="T:TVA.Communication.TransportProtocol">
            <summary>
            Indicates the protocol used in server-client communication.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProtocol.Tcp">
            <summary>
            <see cref="T:TVA.Communication.TransportProtocol"/> is Transmission Control Protocol.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProtocol.Udp">
            <summary>
            <see cref="T:TVA.Communication.TransportProtocol"/> is User Datagram Protocol.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProtocol.Serial">
            <summary>
            <see cref="T:TVA.Communication.TransportProtocol"/> is serial interface.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProtocol.File">
            <summary>
            <see cref="T:TVA.Communication.TransportProtocol"/> is file-system based.
            </summary>
        </member>
        <member name="T:TVA.Communication.TransportProvider`1">
            <summary>
            A class for managing the communication between server and client.
            </summary>
            <typeparam name="T"><see cref="T:System.Type"/> of the object used for server-client communication.</typeparam>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.ID">
            <summary>
            ID of the <see cref="T:TVA.Communication.TransportProvider`1"/> object.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.Provider">
            <summary>
            Provider for the transportation of data.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.Secretkey">
            <summary>
            Key used for the ciphering of data.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.SendBuffer">
            <summary>
            Buffer used for sending data.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.SendBufferOffset">
            <summary>
            Zero-based index of <see cref="F:TVA.Communication.TransportProvider`1.SendBuffer"/> from which data is to be sent.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.SendBufferLength">
            <summary>
            Number of bytes to be sent from <see cref="F:TVA.Communication.TransportProvider`1.SendBuffer"/> starting at <see cref="F:TVA.Communication.TransportProvider`1.SendBufferOffset"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.ReceiveBuffer">
            <summary>
            Buffer used for receiving data.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.ReceiveBufferOffset">
            <summary>
            Zero-based index of <see cref="F:TVA.Communication.TransportProvider`1.ReceiveBuffer"/> at which data is to be received.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.ReceiveBufferLength">
            <summary>
            Number of bytes received in <see cref="F:TVA.Communication.TransportProvider`1.ReceiveBuffer"/> starting at <see cref="F:TVA.Communication.TransportProvider`1.ReceiveBufferOffset"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.Statistics">
            <summary>
            <see cref="T:TVA.Communication.TransportStatistics"/> for the <see cref="T:TVA.Communication.TransportProvider`1"/> object.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportProvider`1.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TransportProvider`1"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportProvider`1.Reset">
            <summary>
            Resets <see cref="T:TVA.Communication.TransportProvider`1"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportProvider`1.WaitAsync(System.Int32,System.AsyncCallback,System.IAsyncResult)">
            <summary>
            Asynchronously waits for an asynchronous operation to complete within the <paramref name="timeout"/> period and 
            invokes the <paramref name="asyncCallback"/> with the <paramref name="asyncResult"/> if the operation times out.
            </summary>
            <param name="timeout">The number of milliseconds to wait for the asynchronous operation to complete.</param>
            <param name="asyncCallback">The <see cref="T:System.AsyncCallback"/> of the asynchronous operation being monitored.</param>
            <param name="asyncResult">The <see cref="T:System.IAsyncResult"/> of the asynchronous operation being monitored.</param>
        </member>
        <member name="T:TVA.Communication.TransportStatistics">
            <summary>
            A class for statistics related to server-client communication.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.LastSend">
            <summary>
            <see cref="T:System.DateTime"/> of the last send operation.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.LastReceive">
            <summary>
            <see cref="T:System.DateTime"/> of the last receive operation.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.LastBytesSent">
            <summary>
            Number of bytes sent in the last send operation.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.LastBytesReceived">
            <summary>
            Number of bytes received in the last receive operation.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.TotalBytesSent">
            <summary>
            Total number of bytes sent.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.TotalBytesReceived">
            <summary>
            Total number of bytes received.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportStatistics.Reset">
            <summary>
            Resets the <see cref="T:TVA.Communication.TransportStatistics"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportStatistics.UpdateBytesSent(System.Int32)">
            <summary>
            Updates statistics related to sending of data.
            </summary>
            <param name="bytesSent">Number of bytes sent in the send operation.</param>
        </member>
        <member name="M:TVA.Communication.TransportStatistics.UpdateBytesReceived(System.Int32)">
            <summary>
            Updates statistics related to receiving of data.
            </summary>
            <param name="bytesReceived">Number of bytes received in the receive operation.</param>
        </member>
        <member name="T:TVA.Communication.UdpClient">
            <summary>
            Represents a UDP-based communication server.
            </summary>
            <remarks>
            <para>
            Use <see cref="T:TVA.Communication.UdpClient"/> when the primary purpose is to receive data.
            </para>
            <para>
            The <see cref="P:TVA.Communication.UdpClient.Client"/> socket can be bound to a specified interface on a machine with multiple interfaces by 
            specifying the interface in the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> (Example: "Server=localhost:8888; Port=8989; Interface=127.0.0.1")
            </para>
            <para>
            The <see cref="P:TVA.Communication.UdpClient.Client"/> socket can be used just for transmitting data without being bound to a local interface 
            by specifying -1 for the port number in the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> (Example: "Server=localhost:8888; Port=-1")
            </para>
            </remarks>
            <example>
            This example shows how to use the <see cref="T:TVA.Communication.UdpClient"/> component:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            using TVA.Security.Cryptography;
            using TVA.IO.Compression;
            
            class Program
            {
                static UdpClient m_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    m_client = new UdpClient("Server=localhost:8888; Port=8989");
                    m_client.Handshake = false;
                    m_client.ReceiveTimeout = -1;
                    m_client.Encryption = CipherStrength.None;
                    m_client.Compression = CompressionStrength.NoCompression;
                    m_client.SecureSession = false;
                    m_client.Initialize();
                    // Register event handlers.
                    m_client.ConnectionAttempt += m_client_ConnectionAttempt;
                    m_client.ConnectionEstablished += m_client_ConnectionEstablished;
                    m_client.ConnectionTerminated += m_client_ConnectionTerminated;
                    m_client.ReceiveDataComplete += m_client_ReceiveDataComplete;
                    // Connect the client.
                    m_client.Connect();
            
                    // Transmit user input to the server.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        m_client.Send(input);
                    }
            
                    // Disconnect the client on shutdown.
                    m_client.Disconnect();
                }
            
                static void m_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to server.");
                }
            
                static void m_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to server.");
                }
            
                static void m_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from server.");
                }
            
                static void m_client_ReceiveDataComplete(object sender, EventArgs&lt;byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data - {0}.", m_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.UdpClient.DefaultReceiveBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ReceiveBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpClient.SIO_UDP_CONNRESET">
            <summary>
            Specifies the constant to be used for disabling <see cref="F:System.Net.Sockets.SocketError.ConnectionReset"/> when endpoint is not listening.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.UdpClient"/>. See <see cref="F:TVA.Communication.UdpClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.UdpClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.Disconnect">
            <summary>
            Disconnects the <see cref="T:TVA.Communication.UdpClient"/> from the connected server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.UdpClient"/> to the server asynchronously.
            </summary>
            <exception cref="T:System.FormatException">Server property in <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> is invalid.</exception>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.UdpClient"/> when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.UdpClient.OpenPort">
            <summary>
            Connects to the <see cref="T:TVA.Communication.UdpClient"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ValidateConnectionString(System.String)">
            <summary>
            Validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">Connection string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Port property value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.UdpClient.GetSessionSecret">
            <summary>
            Gets the secret key to be used for ciphering client data.
            </summary>
            <returns>Cipher secret key.</returns>
        </member>
        <member name="M:TVA.Communication.UdpClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.UdpClient.SendPayloadAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ReceiveHandshakeAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of handshake data.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ReceiveHandshakeAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of handshake data.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ReceivePayloadAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ReceivePayloadAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.NoGoodbyeCheck(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Delegate that gets called to verify client disconnect when <see cref="P:TVA.Communication.ClientBase.Handshake"/> is turned off.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.DoGoodbyeCheck(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Delegate that gets called to verify client disconnect when <see cref="P:TVA.Communication.ClientBase.Handshake"/> is turned on.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.TerminateConnection(TVA.Communication.TransportProvider{System.Net.Sockets.Socket},System.Boolean)">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.UdpClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.UdpClient"/>.
            </summary>
        </member>
        <member name="T:TVA.Communication.UdpServer">
            <summary>
            Represents a UDP-based communication server.
            </summary>
            <remarks>
            <para>
            Use <see cref="T:TVA.Communication.UdpServer"/> when the primary purpose is to transmit data.
            </para>
            <para>
            The <see cref="P:TVA.Communication.UdpServer.Server"/> socket can be bound to a specified interface on a machine with multiple interfaces by 
            specifying the interface in the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> (Example: "Port=8888; Clients=localhost:8989; Interface=127.0.0.1")
            </para>
            <para>
            The <see cref="P:TVA.Communication.UdpServer.Server"/> socket can be used just for transmitting data without being bound to a local interface 
            by specifying -1 for the port number in the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> (Example: "Port=-1; Clients=localhost:8989")
            </para>
            </remarks>
            <example>
            This example shows how to use the <see cref="T:TVA.Communication.UdpServer"/> component:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            using TVA.Security.Cryptography;
            using TVA.IO.Compression;
            
            class Program
            {
                static UdpServer m_server;
            
                static void Main(string[] args)
                {
                    // Initialize the server.
                    m_server = new UdpServer("Port=8888; Clients=localhost:8989");
                    m_server.Handshake = false;
                    m_server.ReceiveTimeout = -1;
                    m_server.Encryption = CipherStrength.None;
                    m_server.Compression = CompressionStrength.NoCompression;
                    m_server.SecureSession = false;
                    m_server.Initialize();
                    // Register event handlers.
                    m_server.ServerStarted += m_server_ServerStarted;
                    m_server.ServerStopped += m_server_ServerStopped;
                    m_server.ClientConnected += m_server_ClientConnected;
                    m_server.ClientDisconnected += m_server_ClientDisconnected;
                    m_server.ReceiveClientDataComplete += m_server_ReceiveClientDataComplete;
                    // Start the server.
                    m_server.Start();
            
                    // Multicast user input to all connected clients.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        m_server.Multicast(input);
                    }
            
                    // Stop the server on shutdown.
                    m_server.Stop();
                }
            
                static void m_server_ServerStarted(object sender, EventArgs e)
                {
                    Console.WriteLine("Server has been started!");
                }
            
                static void m_server_ServerStopped(object sender, EventArgs e)
                {
                    Console.WriteLine("Server has been stopped!");
                }
            
                static void m_server_ClientConnected(object sender, EventArgs&lt;Guid&gt; e)
                {
                    Console.WriteLine(string.Format("Client connected - {0}.", e.Argument));
                }
            
                static void m_server_ClientDisconnected(object sender, EventArgs&lt;Guid&gt; e)
                {
                    Console.WriteLine(string.Format("Client disconnected - {0}.", e.Argument));
                }
            
                static void m_server_ReceiveClientDataComplete(object sender, EventArgs&lt;Guid, byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data from {0} - {1}.", e.Argument1, m_server.TextEncoding.GetString(e.Argument2, 0, e.Argument3)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.UdpServer.DefaultReceiveBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ReceiveBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpServer.DefaultConfigurationString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpServer.SIO_UDP_CONNRESET">
            <summary>
            Specifies the constant to be used for disabling <see cref="F:System.Net.Sockets.SocketError.ConnectionReset"/> when endpoint is not listening.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpServer"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpServer"/> class.
            </summary>
            <param name="configString">Config string of the <see cref="T:TVA.Communication.UdpServer"/>. See <see cref="F:TVA.Communication.UdpServer.DefaultConfigurationString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.UdpServer.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpServer"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.UdpServer"/>.</param>
        </member>
        <member name="M:TVA.Communication.UdpServer.Stop">
            <summary>
            Stops the <see cref="T:TVA.Communication.UdpServer"/> synchronously and disconnects all connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.Start">
            <summary>
            Starts the <see cref="T:TVA.Communication.UdpServer"/> synchronously and begins accepting client connections asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to <see cref="M:TVA.Communication.UdpServer.Start"/> the <see cref="T:TVA.Communication.UdpServer"/> when it is running.</exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.DisconnectOne(System.Guid)">
            <summary>
            Disconnects the specified connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.Client(System.Guid)">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object associated with the specified client ID.
            </summary>
            <param name="clientID">ID of the client.</param>
            <returns>An <see cref="T:TVA.Communication.TransportProvider`1"/> object.</returns>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.ValidateConfigurationString(System.String)">
            <summary>
            Validates the specified <paramref name="configurationString"/>.
            </summary>
            <param name="configurationString">Configuration string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Port property value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.GetSessionSecret(System.Guid)">
            <summary>
            Gets the secret key to be used for ciphering client data.
            </summary>
            <param name="clientID">ID of the client whose secret key is to be retrieved.</param>
            <returns>Cipher secret key of the client with the specified <paramref name="clientID"/>.</returns>
        </member>
        <member name="M:TVA.Communication.UdpServer.SendDataToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.UdpServer.SendPayloadAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ReceiveHandshakeAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of handshake data.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ReceiveHandshakeAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of handshake data.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ReceivePayloadAnyAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data from any endpoint.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ReceivePayloadAnyAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data from any endpoint.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ReceivePayloadOneAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Initiate method for asynchronous receive operation of payload data from a single endpoint.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ReceivePayloadOneAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data from a single endpoint.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.NoGoodbyeCheck(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Delegate that gets called to verify client disconnect when <see cref="P:TVA.Communication.ServerBase.Handshake"/> is turned off.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.DoGoodbyeCheck(TVA.Communication.TransportProvider{System.Net.Sockets.Socket})">
            <summary>
            Delegate that gets called to verify client disconnect when <see cref="P:TVA.Communication.ServerBase.Handshake"/> is turned on.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.TerminateConnection(TVA.Communication.TransportProvider{System.Net.Sockets.Socket},System.Boolean)">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpServer.Server">
            <summary>
            Gets the <see cref="T:System.Net.Sockets.Socket"/> object for the <see cref="T:TVA.Communication.UdpServer"/>.
            </summary>
        </member>
    </members>
</doc>
